package main

// 给定数组， 求出数组中两数之和 为 number 的个数。 没有返回 0
import "fmt"

func EligibleNum(number int, nums []int) (count int) {
	// 1. 定义map，加速查找， 且可能数组中存在重复元素，记录元素出现个数
	m := map[int] int{}
	// 2. 遍历 nums， 找到两数和等于 number的个数
	for _, v := range nums {
		// 计算 和为 count的个数，进行累加
		count += m[number - v]
		// 若不存在map中，默认返回 0
		m[v] = m[v] + 1
	}

	return
}

func main() {
	number := 8
	// 使用切片（slice），不是定义数组，定义数组是 [...]int{不定长}
	nums := []int{1, 2, 4, 4, 5, 6 ,7 ,8 ,9}
	fmt.Println(EligibleNum(number, nums))
}
